home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib09.dsk
/
TRUNCATE AND ROUND.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
2KB
|
35 lines
1 REM ****************************
2 REM * TRUNC & ROUND *
3 REM * BY HOWARD S. BALSAM *
4 REM * COPYRIGHT (C) 1982 *
5 REM * BY MICRO-SPARC INC *
6 REM * LINCOLN, MA. 01773 *
7 REM ****************************
110 REM A VERSION OF THE NUMBER-FORMATTING FROM THE
120 REM DEMO IN APPLESOFT II REFERENCE MANUAL,
130 REM PAGES 18 & 22
140 HOME : PRINT " TRUNCATING & ROUNDING NUMBERS": PRINT
150 HTAB 6: INPUT "TYPE ANY NUMBER: ";X
160 PRINT : PRINT " AFTER CONVERSION TO REAL PRECISION,": PRINT " HOW MANY DIGITS DO YOU WISH ": INPUT " TO THE RIGHT OF THE DECIMAL? ";D
170 GOSUB 1000
180 VTAB 23: PRINT " HIT 'SPC BAR' TO CONTINUE; ": PRINT " HIT ANY OTHER TO QUIT: ";: GET Z$:Z = ASC(Z$)
190 IF Z = 32 GOTO 140
200 HOME : VTAB 10: HTAB 10: INVERSE : PRINT "***** G'BYE, NUMBERS! *****": NORMAL : END
1000 X$ = STR$(X): REM CONVERT INPUT TO STRING
1010 REM FIND POSITION OF E, IF IT EXISTS:
1020 FOR I = 1 TO LEN(X$)
1030 IF MID$ (X$,I,1) < >"E" THEN NEXT I
1040 REM I IS NOW AT EXPONENT PORTION (OR END).
1050 REM FIND POSITION OF DECIMAL POINT, IF IT EXISTS:
1060 FOR J = 1 TO I -1
1070 IF MID$ (X$,J,1) < >"." THEN NEXT J
1080 REM J IS NOW AT DECIMAL PT. (OR END OF NO. PORTION).
1090 REM DO D DIGITS EXIST TO RIGHT OF POINT?
1100 IF J +D < = I -1 THEN N = J +D: GOTO 1130: REM YES.
1110 N = I -1: REM NO, SO PRINT ALL DIGITS.
1120 REM TRUNCATING: PRINT NO. PORTION AND EXPONENT PORTION:
1130 PRINT : PRINT SPC( 10)"TRUNCATED: " LEFT$(X$,N) + MID$ (X$,I)
1140 REM ROUNDING: ROUND NO. PORTION, ANNEX EXPONENT PART, IF ANY:
1150 L = VAL( LEFT$(X$,N +1)):P = 10 ^D:LL = INT(L *P +.5)/P:L$ = STR$(LL)
1160 PRINT : PRINT SPC( 10)"ROUNDED: "L$ + MID$ (X$,I)
1170 RETURN